home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet internetowy / Rozne / HTTrack 3.40-2 / httrack-3.40-2.exe / {app} / src_win / WinHTTrack / MainTab.cpp < prev    next >
C/C++ Source or Header  |  2004-02-14  |  8KB  |  306 lines

  1. // Tab Control Principal
  2.  
  3. #include "stdafx.h"
  4. #include "Shell.h"
  5. #include "Maintab.h"
  6. #include "direct.h"
  7.  
  8. #include "winsvc.h "
  9.  
  10. #include "windows.h"
  11. #include <stdio.h>
  12. #include <stdlib.h>
  13. #include <string.h>
  14.  
  15. #ifdef _DEBUG
  16. #define new DEBUG_NEW
  17. #undef THIS_FILE
  18. static char THIS_FILE[] = __FILE__;
  19. #endif
  20.  
  21. // Icone HTTrack
  22. extern HICON httrack_icon;
  23.  
  24. // Helper
  25. extern LaunchHelp* HtsHelper;
  26.  
  27.  
  28. /////////////////////////////////////////////////////////////////////////////
  29. // CMainTab
  30.  
  31. //IMPLEMENT_DYNAMIC(CMainTab, CPropertySheet)
  32.  
  33. //HINSTANCE hInst = NULL;
  34. //SC_HANDLE hSCMan = NULL;
  35.  
  36.  
  37. CMainTab::CMainTab(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
  38. :CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
  39. {
  40.   AddControlPages();
  41. }
  42.  
  43. CMainTab::CMainTab(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
  44. :CPropertySheet(pszCaption, pParentWnd, iSelectPage)
  45. {
  46.   AddControlPages();
  47. }
  48.  
  49. CMainTab::~CMainTab()
  50. {
  51. }
  52.  
  53. void CMainTab::AddControlPages()
  54. {
  55.   m_hIcon = httrack_icon;
  56.   m_psh.dwFlags |= PSP_USEHICON;  // utiliser ic⌠ne
  57.   m_psh.dwFlags &= ~PSH_HASHELP;  // pas de bouton help
  58.   m_psh.hIcon = m_hIcon;
  59.   //m_psh.pszIcon = "test";
  60.  
  61.   // pas de "apply"
  62.   this->m_psh.dwFlags|=PSH_NOAPPLYNOW;
  63.  
  64.   // Ajout des Control TAB dans la feuille principale (MainTab)
  65.   AddPage(&m_option10);       /* Proxy */
  66.   AddPage(&m_option7);        /* Filters */
  67.   AddPage(&m_option5);        /* Limits */
  68.   AddPage(&m_option4);        /* Flow Control */
  69.   AddPage(&m_option1);        /* Links */
  70.   AddPage(&m_option2);        /* Build */
  71.   AddPage(&m_option8);        /* Spider */
  72.   AddPage(&m_option11);       /* MIME types */
  73.   AddPage(&m_option6);        /* Browser ID */
  74.   AddPage(&m_option9);        /* Log, Index, cache */
  75.   AddPage(&m_option3);        /* Expert */
  76. }
  77.  
  78. void CMainTab::DefineDefaultProxy()
  79. {
  80.   while(GetPageCount()>0)
  81.     RemovePage(0);
  82.   AddPage(&m_option10);       /* Only proxy */
  83. }
  84.  
  85. void CMainTab::UnDefineDefaultProxy() {
  86.   AddControlPages();
  87. }
  88.  
  89. BEGIN_MESSAGE_MAP(CMainTab, CPropertySheet)
  90. //{{AFX_MSG_MAP(CMainTab)
  91. ON_WM_QUERYDRAGICON()
  92. ON_WM_SYSCOMMAND()
  93. ON_WM_TIMER()
  94. ON_WM_HELPINFO()
  95. //}}AFX_MSG_MAP
  96. ON_COMMAND(ID_HELP_FINDER,OnHelpInfo2)
  97. ON_COMMAND(ID_HELP,OnHelpInfo2)
  98. ON_COMMAND(ID_DEFAULT_HELP,OnHelpInfo2)
  99. //ON_BN_CLICKED(IDOK, OnOK)
  100. //ON_BN_CLICKED(IDCANCEL, OnCancel)
  101. ON_COMMAND(ID_APPLY_NOW,OnApplyNow)
  102. ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  103. END_MESSAGE_MAP()
  104.  
  105. /////////////////////////////////////////////////////////////////////////////
  106. // CMainTab message handlers
  107.  
  108. BOOL CMainTab::OnInitDialog()
  109. {
  110.   // IDM_ABOUTBOX must be in the system command range.
  111.   //ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  112.   //ASSERT(IDM_ABOUTBOX < 0xF000);
  113.   
  114.   SetIcon(m_hIcon, TRUE);
  115.   SetIcon(m_hIcon, FALSE);
  116.   EnableToolTips(true);     // TOOL TIPS
  117.  
  118. /*
  119.   CMenu* pSysMenu = GetSystemMenu(FALSE);
  120.   if (pSysMenu != NULL)
  121.   {
  122.     CString strAboutMenu;
  123.     strAboutMenu.LoadString(IDS_ABOUTBOX);
  124.     if (!strAboutMenu.IsEmpty())
  125.     {
  126.       pSysMenu->AppendMenu(MF_SEPARATOR);
  127.       pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  128.     }
  129.   }
  130. */  
  131.   // Chargement des prΘfΘrences
  132.   LoadPrefs();
  133.   
  134.   // Appliquer prΘfΘrences
  135.   Apply();
  136.   
  137.   int r = CPropertySheet::OnInitDialog();
  138.   //SetActivePage(GetPageCount()-1);
  139.   SetActivePage(0);
  140.  
  141.   // mode modif α la volΘe
  142.   return r;
  143. }
  144. HCURSOR CMainTab::OnQueryDragIcon()
  145. {
  146.   return (HCURSOR) m_hIcon;
  147. }
  148.  
  149. BOOL CMainTab::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext)
  150. {
  151.   //removing the default DS_CONTEXT_HELP style
  152.   //dwStyle= WS_SYSMENU | WS_POPUP | WS_CAPTION | DS_MODALFRAME | WS_VISIBLE;
  153.   return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
  154. }
  155.  
  156. void CMainTab::OnSysCommand(UINT nID, LPARAM lParam)
  157. {
  158.   /*if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  159.   {
  160.     SetActivePage(GetPageCount()-1);    // Afficher informations sur le programme et affichant la derniΦre page des control TAB
  161.      }
  162.   else
  163.   {
  164.   */
  165.     CPropertySheet::OnSysCommand(nID, lParam);
  166.   /*}
  167.   */
  168. }
  169.  
  170. // L'utilisateur a appuyΘ sur "Apply"
  171. void CMainTab::OnApplyNow()
  172. {
  173.   EnableWindow(false);
  174.   Default();
  175.   ApplyAndSave();
  176.   EnableWindow(true);
  177. }
  178.  
  179. // Sauver et appliquer les prΘfΘrences
  180. void CMainTab::ApplyAndSave() {
  181.   CWaitCursor wait;      // Afficher curseur sablier
  182.   bool err=false;  // Erreur lors de l'Θcriture des paramΦtres
  183.   
  184.   // Appliquer les prΘfΘrences
  185.   Apply();
  186.   
  187.   // Sauver prΘfΘrences
  188.   CWinApp* pApp = AfxGetApp();
  189.   //if (!pApp->WriteProfileInt("Driver", "DriverId",numero_driver))          // No du driver
  190.   //  err=true;
  191.  
  192.   if (err)
  193.     AfxMessageBox(LANG(LANG_DIAL2));
  194. }
  195.  
  196. // Appliquer prΘfΘrences
  197. void CMainTab::Apply() {
  198.   // Appliquer prΘfΘrences
  199. }
  200.  
  201. // Chargement des prΘfΘrences
  202. void CMainTab::LoadPrefs() {
  203.   CWinApp* pApp = AfxGetApp();
  204.   //n = pApp->GetProfileInt("Driver", "DriverId",0);   // No du driver
  205. }
  206.  
  207. // Appel aide
  208. void CMainTab::OnHelpInfo2() {
  209.   (void)OnHelpInfo(NULL);
  210. }
  211.  
  212. BOOL CMainTab::OnHelpInfo(HELPINFO* dummy) 
  213. {
  214.   //return CDialog::OnHelpInfo(pHelpInfo);
  215.   //AfxGetApp()->WinHelp(0,HELP_FINDER);    // Index du fichier Hlp
  216.   //LaunchHelp(pHelpInfo);
  217.  
  218.   if (this->GetActivePage() == &m_option1)
  219.     HtsHelper->Help("step9_opt1.html");
  220.   else if (this->GetActivePage() == &m_option5)
  221.     HtsHelper->Help("step9_opt2.html");
  222.   else if (this->GetActivePage() == &m_option4)
  223.     HtsHelper->Help("step9_opt3.html");
  224.   else if (this->GetActivePage() == &m_option7)
  225.     HtsHelper->Help("step9_opt4.html");
  226.   else if (this->GetActivePage() == &m_option2)
  227.     HtsHelper->Help("step9_opt5.html");
  228.   else if (this->GetActivePage() == &m_option8)
  229.     HtsHelper->Help("step9_opt6.html");
  230.   else if (this->GetActivePage() == &m_option10)
  231.     HtsHelper->Help("step9_opt7.html");
  232.   else if (this->GetActivePage() == &m_option6)
  233.     HtsHelper->Help("step9_opt8.html");
  234.   else if (this->GetActivePage() == &m_option9)
  235.     HtsHelper->Help("step9_opt9.html");
  236.   else if (this->GetActivePage() == &m_option3)
  237.     HtsHelper->Help("step9_opt10.html");
  238.   else if (this->GetActivePage() == &m_option11)
  239.     HtsHelper->Help("step9_opt11.html");
  240.   else
  241.     HtsHelper->Help();
  242.   return true;
  243. }
  244.  
  245.  
  246. /*
  247. // Capturer OK et Cancel
  248. void CMainTab::OnOK( ) {
  249.   // Sauver et appliquer prΘfΘrences
  250.   ApplyAndSave();
  251. }
  252. void CMainTab::OnCancel( ) {
  253.   // Recharger prΘfΘrences
  254.   LoadPrefs();
  255. }
  256. */
  257.  
  258.  
  259.  
  260. // ------------------------------------------------------------
  261. // TOOL TIPS
  262. //
  263. // ajouter dans le .cpp:
  264. // remplacer les deux <nom classe>:: par le nom de la classe::
  265. // dans la message map, ajouter
  266. // ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  267. // dans initdialog ajouter
  268. // EnableToolTips(true);     // TOOL TIPS
  269. //
  270. // ajouter dans le .h:
  271. // char* GetTip(int id);
  272. // et en generated message map
  273. // afx_msg BOOL OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult );
  274. char* CMainTab::GetTip(int ID)
  275. {
  276.   switch(ID) {
  277.     case IDOK:           return LANG(LANG_TIPOK); break;      
  278.     case IDCANCEL:       return LANG(LANG_TIPCANCEL); break;
  279.     case IDHELP:         return LANG_TIPHELP; break;
  280.   }
  281.   return "";
  282. }
  283. BOOL CMainTab::OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult )
  284. {
  285.   TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
  286.   UINT nID =pNMHDR->idFrom;
  287.   if (pTTT->uFlags & TTF_IDISHWND)
  288.   {
  289.     // idFrom is actually the HWND of the tool
  290.     nID = ::GetDlgCtrlID((HWND)nID);
  291.     if(nID)
  292.     {
  293.       char* st=GetTip(nID);
  294.       if (st != "") {
  295.         pTTT->lpszText = st;
  296.         pTTT->hinst = AfxGetResourceHandle();
  297.         return(TRUE);
  298.       }
  299.     }
  300.   }
  301.   return(FALSE);
  302. }
  303. // TOOL TIPS
  304. // ------------------------------------------------------------
  305.  
  306.